package com.copsoftware.procesos.investigacion.delegate;

import java.util.Collection;

import com.copsoftware.mantenimientos.acusado.assemblers.AcusadoAssembler;
import com.copsoftware.mantenimientos.acusado.beans.AcusadoInvestigacion;
import com.copsoftware.mantenimientos.persona.beans.PersonaCompletaFlt;
import com.copsoftware.mantenimientos.testigo.assemblers.TestigoAssembler;
import com.copsoftware.mantenimientos.testigo.beans.TestigoInvestigacion;
import com.copsoftware.procesos.investigacion.assemblers.InvestigacionAssembler;
import com.copsoftware.procesos.investigacion.bean.InvestigacionBean;
import com.copsoftware.procesos.investigacion.service.InvestigacionService;
import com.copsoftware.struts.forms.RegistrarAcusadoInvestigacionForm;
import com.copsoftware.struts.forms.RegistrarInvestigacionForm;
import com.copsoftware.struts.forms.RegistrarTestigoInvestigacionForm;
import com.copsoftware.utils.beans.DateUtils;

public class InvestigacionDelegate {
	
	public void guardarInvestigacion(RegistrarInvestigacionForm form)
	{
		InvestigacionService investigacionService = new InvestigacionService();
		InvestigacionBean investigacionBean = InvestigacionAssembler.createInvestigacion(form);
		
		investigacionService.guardarInvestigacion(investigacionBean);
		form.getGeneral().setCInvestigacion(String.valueOf(investigacionBean.getCInvestigacion()));
		form.getGeneral().setCEstadoInv(String.valueOf(investigacionBean.getCEstado()));
	} 
	
	/* *** TESTIGOS *****/
	
	public void guardarTestigoInvestigacion(RegistrarTestigoInvestigacionForm form)
	{
		InvestigacionService investigacionService = new InvestigacionService();
		TestigoInvestigacion testigoInvestigacion = TestigoAssembler.createTestigoInvestigacion(form);
		investigacionService.guardarTestigoInvestigacion(testigoInvestigacion);
	}
		
	public void buscarTestigo(RegistrarTestigoInvestigacionForm form)
	{
		InvestigacionService investigacionService = new InvestigacionService();
		TestigoInvestigacion testigoInvestigacion = TestigoAssembler.createTestigoInvestigacion(form);
		investigacionService.buscarTestigo(testigoInvestigacion);
		//String sFecha =  Date. testigoInvestigacion.getFProgramadaTestimonio();
		form.setFProgramadaTestimonio(DateUtils.dateToString(testigoInvestigacion.getFProgramadaTestimonio()));
		form.setXTestimonio(testigoInvestigacion.getXTestimonio());
//		BeanUtils.copyProperties( testigoInvestigacion, form, new String []{"CInvestigador", "CPersona",
//								"FProgramadaTestimonio"});
		
	}
	
	public Collection buscarTestigos (Integer cInvestigacion)
	{
		InvestigacionService  investigacionService = new InvestigacionService();
		Collection testigos = investigacionService.buscarTestigos(cInvestigacion);
		return testigos;
	}
	
	public Collection buscarTestigosSinInv (PersonaCompletaFlt personaCompletaFlt)
	{
		InvestigacionService  investigacionService = new InvestigacionService();
		Collection testigos = investigacionService.buscarTestigosSinInv(personaCompletaFlt);
		return testigos;
	}
	
	
	/* ***  ACUSADOS ****/
	public void guardarAcusadoInvestigacion(RegistrarAcusadoInvestigacionForm form)
	{
		InvestigacionService investigacionService = new InvestigacionService();
		AcusadoInvestigacion acusadoInvestigacion = AcusadoAssembler.createAcusadoInvestigacion(form);
		investigacionService.guardarAcusadoInvestigacion(acusadoInvestigacion);
	}
	
	public void buscarAcusado(RegistrarAcusadoInvestigacionForm form)
	{
		InvestigacionService investigacionService = new InvestigacionService();
		AcusadoInvestigacion acusadoInvestigacion = AcusadoAssembler.createAcusadoInvestigacion(form);
		investigacionService.buscarAcusado(acusadoInvestigacion);
		
		//form.setXAlias()
		form.setXDeclaracion(acusadoInvestigacion.getXDeclaracion());
		form.setXObservacion(acusadoInvestigacion.getXObservacion());
				
		
	}
	
	public Collection buscarAcusados (Integer cInvestigacion)
	{
		InvestigacionService  investigacionService = new InvestigacionService();
		Collection acusados = investigacionService.buscarAcusados(cInvestigacion);
		return acusados;
	}
	
	public Collection buscarAcusadosSinInv (PersonaCompletaFlt personaCompletaFlt)
	{
		InvestigacionService  investigacionService = new InvestigacionService();
		Collection acusados = investigacionService.buscarAcusadosSinInv(personaCompletaFlt);
		return acusados;
	}
	
	public Collection buscarAcusadosSinInv (Integer cInvestigacion)
	{
		InvestigacionService  investigacionService = new InvestigacionService();
		Collection acusados = investigacionService.buscarAcusadosSinInv(cInvestigacion);
		return acusados;
	}
	
}
